using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using csharp.rad.general;

namespace csharp.rad.sisponto
{
   public class Disciplina
   {
      private Database bd;
      public Database.Result result = new Database.Result();
      private String d_msgErro;
      private Int32 d_id_disciplina;
      private String d_nome;
      private Int32 d_id_curso;
      private Int32 d_id_prof;
      private int d_periodo;

      public Disciplina(Database bancoDeDados)
      {
         bd = bancoDeDados;
      }
      public Int32 id_disciplina
      {
         get { return d_id_disciplina; }
         set { d_id_disciplina = value; }
      }
      public String nome
      {
         get { return d_nome; }
         set { d_nome = value; }
      }
      public Int32 id_curso
      {
         get { return d_id_curso; }
         set { d_id_curso = value; }
      }
      public Int32 id_prof
      {
         get { return d_id_prof; }
         set { d_id_prof = value; }
      }
      public int periodo
      {
         get { return d_periodo; }
         set { d_periodo = value; }
      }
      public String _msg_erro
      {
         get { return d_msgErro; }
         set { d_msgErro = value; }
      }

      public int inserir()
      {
         String _sql;

         _sql = "INSERT INTO disciplina (nome,id_curso,id_prof,periodo) "
              + " VALUES('" + d_nome + "'," + d_id_curso + "," + d_id_prof + "," + d_periodo + ")";

         result = bd.ExecuteCommand(_sql, Database.doNotUseTransaction);

         if (result.Status == Database.Status.Failed)
         {
            d_msgErro = result.ErrorMessage;
            return -1;
         }
         //Recupera o id da disciplina
         _sql = "SELECT id_disciplina FROM disciplina WHERE (nome = '" + d_nome + "')";
         object idDisciplina = bd.ExecuteScalar(_sql, out result);
         if (result.Status == Database.Status.Failed)
         {
            d_msgErro = result.ErrorMessage;
            return -1;
         }
         return Convert.ToInt32(idDisciplina);
      }

      public int gravar()
      {
         String _sql;

         _sql = "UPDATE disciplina SET nome='" + d_nome + "'"
               + ",id_prof=" + d_id_prof
               + ",periodo=" + d_periodo
               + " WHERE id_curso=" + d_id_curso;

         result = bd.ExecuteCommand(_sql, Database.doNotUseTransaction);

         if (result.Status == Database.Status.Failed)
         {
            d_msgErro = result.ErrorMessage;
            return -1;
         }

         return 1;
      }

      public int procura(string nome)
      {
         string _sql = "SELECT id_disciplina FROM disciplina WHERE nome = '" + nome + "'";

         object ret = bd.ExecuteScalar(_sql, out result);

         if (ret != null)
            return (Convert.ToInt32(ret.ToString()));
         else if (result.Status != Database.Status.Failed)
            return 0;
         else
            return -1;
      }

      public int obter()
      {
         string _sql;
         DataSet dsAux;

         _sql = "SELECT * FROM disciplina WHERE id_disciplina = " + id_disciplina.ToString();
         dsAux = bd.ExecuteQuery(_sql, "titulo_prof", out result);

         if (result.Status == Database.Status.Failed)
         {
            _msg_erro = result.ErrorMessage;
            return -1;
         }
         if (dsAux.Tables[0].Rows.Count < 1)
            return 0;
         DataRow linha = dsAux.Tables[0].Rows[0];

         d_nome = Convert.ToString(linha["nome"]);
         d_id_curso = Convert.ToInt32(linha["id_curso"]);
         d_id_prof = Convert.ToInt32(linha["id_prof"]);
         d_periodo = Convert.ToInt32(linha["periodo"]);
         return 1;
      }
   }
}
